package main

import "fmt"

func QuickSort(left, right int, arr *[6]int) {
	l := left
	r := right
	//pivot 是中轴，支点
	pivot := arr[(left+right)/2]
	//temp := 0
	//for循环的目标是将比pivot小的数放到左边，比pivot大的数据放到右边
	for l < r {
		//从pivot的左边找到大于等于pivot的值
		for arr[l] < pivot {
			l++
		}
		//从pivot的右边找到小雨等于pivot的值
		for arr[r] > pivot {
			r--
		}
		//l >= r表明本次分解任务完成，break
		if l >= r {
			break
		}
		arr[l], arr[r] = arr[r], arr[l]
		if arr[l] == pivot {
			r--
		}
		if arr[r] == pivot {
			l++
		}
	}
	//如果l=r，在移动一下，防止死循环
	if l == r {
		l++
		r--
	}
	//向左递归
	if left < r {
		QuickSort(left, r, arr)
	}
	//向右递归
	if right > l {
		QuickSort(l, right, arr)
	}
}

func main() {
	arr := [6]int{-9, 78, 0, 23, -567, 70}
	QuickSort(0, len(arr)-1, &arr)
	fmt.Println(arr)
}
